package br.com.sgpv2.service.nivel;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.organograma.Nivel;
import br.com.sgpv2.entity.pessoa.Contrato;
import br.com.sgpv2.hibernate.nivel.NivelRepository;


/**
 * Classe de serviço de Nivel.
 */
@Service(value = "nivelService")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class NivelServiceImpl implements NivelService {
	
	private NivelRepository nivelRepository;

	@Override
	public void salvar(Nivel nivel) {
		nivelRepository.salvar(nivel);

	}

	@Override
	public void alterar(Nivel nivel) {
		nivelRepository.alterar(nivel);

	}

	@Override
	public List<Nivel> listar() {
		return nivelRepository.listarOrder("codigo");
	}

	@Override
	public void excluir(Nivel nivel) {
		nivelRepository.excluir(nivel);

	}

	@Override
	public Nivel buscar(Integer pk) throws NegocioExeception {
		return nivelRepository.buscar(pk);
	}

	@Override
	public boolean validarExclusao(String idNivel) {
		List<Contrato> contratos = nivelRepository.listarContratosPorDepartamento(Integer.parseInt(idNivel));
		if(contratos.size() > 0){
			return false;
		}else{
			return true;
		}
	}

	public NivelRepository getNivelRepository() {
		return nivelRepository;
	}

	
	@Autowired
	public void setNivelRepository(NivelRepository nivelRepository) {
		this.nivelRepository = nivelRepository;
	}

	@Override
	public Nivel buscarNivelPorCodigo(String nivel) {
		return nivelRepository.buscarNivelPorCodigo(nivel);
	}

	@Override
	public List<Nivel> consultarNivelPorDescricao(String descricao) {
		return nivelRepository.consultarNivelPorDescricao(descricao);
	}

}
